package com.ruoyi.controller;

import com.ruoyi.common.Result;
import com.ruoyi.entity.StyleTemplate;
import com.ruoyi.service.StyleTemplateService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 风格模板控制器
 * 处理风格模板相关的HTTP请求
 *
 * @author ruoyi
 */
@Api(tags = "风格模板管理接口")
@RestController
@RequestMapping("/api/styles")
public class StyleTemplateController {
    
    @Autowired
    private StyleTemplateService styleTemplateService;
    
    /**
     * 获取所有启用的风格模板列表
     *
     * @return 风格模板列表
     */
    @ApiOperation("获取启用的风格模板列表")
    @GetMapping("/list")
    public Result<List<StyleTemplate>> listEnabledTemplates() {
        List<StyleTemplate> templates = styleTemplateService.listEnabledTemplates();
        return Result.success(templates);
    }
    
    /**
     * 根据ID获取风格模板详情
     *
     * @param id 模板ID
     * @return 风格模板详情
     */
    @ApiOperation("获取风格模板详情")
    @GetMapping("/{id}")
    public Result<StyleTemplate> getTemplateById(@ApiParam("模板ID") @PathVariable Integer id) {
        StyleTemplate template = styleTemplateService.getTemplateById(id);
        return Result.success(template);
    }
    
    /**
     * 创建风格模板
     *
     * @param template 风格模板信息
     * @return 创建结果
     */
    @ApiOperation("创建风格模板")
    @PostMapping
    public Result<Boolean> createTemplate(@ApiParam("风格模板信息") @RequestBody StyleTemplate template) {
        boolean success = styleTemplateService.createTemplate(template);
        return Result.success(success);
    }
    
    /**
     * 更新风格模板
     *
     * @param id 模板ID
     * @param template 风格模板信息
     * @return 更新结果
     */
    @ApiOperation("更新风格模板")
    @PutMapping("/{id}")
    public Result<Boolean> updateTemplate(
            @ApiParam("模板ID") @PathVariable Integer id,
            @ApiParam("风格模板信息") @RequestBody StyleTemplate template) {
        template.setId(id);
        boolean success = styleTemplateService.updateTemplate(template);
        return Result.success(success);
    }
    
    /**
     * 删除风格模板
     *
     * @param id 模板ID
     * @return 删除结果
     */
    @ApiOperation("删除风格模板")
    @DeleteMapping("/{id}")
    public Result<Boolean> deleteTemplate(@ApiParam("模板ID") @PathVariable Integer id) {
        boolean success = styleTemplateService.deleteTemplate(id);
        return Result.success(success);
    }
    
    /**
     * 启用/禁用风格模板
     *
     * @param id 模板ID
     * @param status 是否启用
     * @return 操作结果
     */
    @ApiOperation("启用/禁用风格模板")
    @PutMapping("/{id}/status")
    public Result<Boolean> updateTemplateStatus(
            @ApiParam("模板ID") @PathVariable Integer id,
            @ApiParam("是否启用") @RequestParam Boolean status) {
        boolean success = styleTemplateService.updateTemplateStatus(id, status);
        return Result.success(success);
    }
} 